<template>
	<div class="u-page">
		<u-navbar :title="title" :custom-back="comeback" :background="background" :border-bottom="false"
			title-width="380"></u-navbar>
		<section class="aui-flexView">
			<section class="aui-scrollView">
				<div class="aui-tab" data-ydui-tab>
					<div class="tab-panel-item tab-active" v-if="membersList && membersList.length>0">
						<u-swipe-action btn-width="360" :show="item.show" :index="index" v-for="(item, index) in membersList"
							:key="item.id" @click="click" @open="open" :options="options" >
							<div class="aui-flex b-line" @click="toDetails(item)">
								<div class="aui-ranking-text">
									<em>{{index+1}}</em>
								</div>
								<div class="aui-ranking-img" @click.stop="toEvaluationInfo(item)">
									<img :src="item.partnerAvatarUrl" alt="">
									<u-image width="110rpx" height="110rpx" :src="item.partnerAvatarUrl"
										shape="square"></u-image>
								</div>
								<div class="aui-ranking-name aui-flex-box">
									<div style="display: flex;justify-content: space-between;align-items: center;">
										<h2>{{item.partnerName}}</h2>
										<u-tag :text="getStatusTag(item.status, item.grade)" type="info" mode="dark"
											size="mini" color="#ffffff"
											:bg-color="getStatusColor(item.status, item.grade)"></u-tag>
									</div>
									<p>领取时间：{{item.createTime?item.createTime:""}}</p>
								</div>
								<div class="aui-ranking-icon">
									<img src="img/icon.png" alt="">
								</div>
							</div>
						</u-swipe-action>
					</div>
					<div class="u-pt-50 u-pb-50" style="margin: 0 auto;" v-else>
						<u-empty text="暂无数据" mode="data"></u-empty>
					</div>
				</div>
			</section>
		</section>

		<!-- 黑名单 -->
		<u-modal v-model="blacklist_show" :mask-close-able="true" confirm-text="加入黑名单" confirm-color="#eb5468"
			show-cancel-button cancel-text="移除黑名单" :content="blacklist_show_text" @confirm="addToBlacklist"
			@cancel="removeToBlacklist">
		</u-modal>

		<!-- 回收名额 -->
		<u-modal v-model="recovery_show" :mask-close-able="true" confirm-text="回收名额" confirm-color="#eb5468"
			show-cancel-button :content="recovery_show_text" @confirm="confirmRecycling">
		</u-modal>

		<!-- 回收名额 -->
		<u-modal v-model="recovery_show2" :mask-close-able="true" confirm-text="平台提示" confirm-color="#eb5468"
			:content="recovery_show_text2"></u-modal>

	</div>
</template>

<script>
	import globalData from "@/globalData";
	export default {
		data() {
			return {
				docUnid: '',
				title: '报名详情',
				quota: '', // 活动名额
				joinQuota: '', // 参与人数
				membersList: [],
				pageNum: 1,
				pageSize: 10,
				blacklist_show: false, // 黑名单弹窗
				blacklist_show_text: '',
				recovery_show: false, // 回收名额弹窗
				recovery_show_text: '',
				recovery_show2: false,
				recovery_show_text2: '',
				options: [{
						text: '回收',
						style: {
							'backgroundColor': '#f3ab3f',
						}
					},
					{
						text: '黑名单',
						style: {
							'backgroundColor': '#dd524d',
						}
					}
				],
				background: {
					backgroundColor: '#f3e4e9',
				},
				userInfo: {}
			}
		},

		onLoad(options) {
			
			this.userInfo = uni.getStorageSync('userInfo');
			if (this.isNotNull(options.docUnid)) {
				this.docUnid = options.docUnid;
				this.initMembersData(this.docUnid)
			}
		},

		onPullDownRefresh() {
			this.pageNum = 1;
			this.initMembersData(this.docUnid);
			setTimeout(() => {
				// 停止Loading
				uni.stopPullDownRefresh();
			}, 1000)
		},

		onReachBottom() {
			this.pageNum += 1;
			this.initMembersData(this.docUnid);
		},

		methods: {

			/**
			 * 获取所有报名记录
			 * @param {Object} docUnid
			 */
			async initMembersData(docUnid) {
				let result = await this.$u.api.unifyMiniRest({
					systemid: "meily",
					url: "/evaluation/signup/page/list",
					pageNum: this.pageNum,
					pageSize: this.pageSize,
					mainId: docUnid,
					loading: false // 默认发起请求会有一个全局的Loading，设置false可去掉
				});
				if (result.code == 200) {
					if (this.pageNum != 1) {
						this.membersList = this.membersList.concat(result.rows)
					} else {
						this.membersList = result.rows
					}
					this.initAttrShow(this.membersList);

					// 获取活动详情
					this.getActivityDetails(docUnid);
				}
			},

			/**
			 * 获取测评任务详情
			 * @param {Object} docUnid
			 */
			async getActivityDetails(docUnid) {
				let result = await this.$u.api.unifyMiniRestGet({
					systemid: "meily",
					url: "/evaluation/task/info/" + docUnid,
					loading: true // 默认发起请求会有一个全局的Loading，设置false可去掉
				});
				if (result.code == 200) {
					this.taskInfo = result.data; // 活动详情
					this.quota = this.taskInfo.quota; // 活动名额
					this.joinQuota = this.membersList.length; // 参与人数
					this.title = "报名详情(" + this.joinQuota + "/" + this.quota + ")";
				} else {
					this.$u.toast(result.msg)
				}
			},

			/**
			 * 初始化show属性
			 */
			initAttrShow(arr_data) {
				for (let i in arr_data) {
					arr_data[i].show = false
				}
			},

			/**
			 * 跳转到对应页面
			 * （1）待提交/已回收：不可点击；
			 * （2）待验收：点击跳转到待办；
			 * （3）已验收/验收不通过的情况：点击跳转到【查看成果】；
			 * @param {Object} item
			 */
			toDetails(item) {

				// 验收人员
				if (item.inspectorId == this.userInfo.userId) {
					if (item.status == '待验收') {
						this.$u.route('/pages_private_scene1/evaluation/acceptance_results?recordId=' + item.id);
						
					} else if (item.status == '已验收') {
						this.$u.route('/pages_private_scene1/evaluation/acceptance_results?recordId=' + item.id + '&readonly=1');
						
					} else if(item.status == '已回收' && Number(item.returnNum) > 0){
						// 验收不通过的情况，点击跳转到【查看成果+返修意见】但没有操作按钮
						this.$u.route('/pages_private_scene1/evaluation/acceptance_results?recordId=' + item.id + '&readonly=1');
					}
					
				} else {
					
					if (item.status == '待验收' || item.status == '已验收') {
						this.$u.route('/pages_private_scene1/evaluation/acceptance_results?recordId=' + item.id + '&readonly=1');
						
					} else if(item.status == '已回收' && Number(item.returnNum) > 0){
						// 验收不通过的情况，点击跳转到【查看成果+返修意见】但没有操作按钮
						this.$u.route('/pages_private_scene1/evaluation/acceptance_results?recordId=' + item.id + '&readonly=1');
					}
				}
			},

			/** 
			 * 跳转到测评师资料页面
			 */
			toEvaluationInfo(item) {
				this.$u.route('/pages_tabbar_contact/personal_contact/CustomerInfo_Readonly?partnerId=' + item.partnerId)
			},

			// 左滑事件
			click(index, index1) {
				let option_data = this.getCurrentData()
				this.Option_Select_User = option_data[index]
				if (index1 == 0) {
					this.recovery_show_text = "确认回收" + this.Option_Select_User.partnerName + "用户的名额。"
					this.recovery_show = true

				} else if (index1 == 1) {
					this.blacklist_show_text = "请对" + this.Option_Select_User.partnerName + "用户进行操作。"
					this.blacklist_show = true
				}
			},

			// 如果打开一个的时候，不需要关闭其他，则无需实现本方法
			open(index) {
				// 先将正在被操作的swipeAction标记为打开状态，否则由于props的特性限制，
				// 原本为'false'，再次设置为'false'会无效
				let option_data = this.getCurrentData()
				option_data[index].show = true;
				option_data.map((val, idx) => {
					if (index != idx) option_data[idx].show = false;
				})
			},

			/**
			 * 获取当前成员数据
			 */
			getCurrentData() {
				return this.membersList;
			},

			/**
			 * 加入黑名单
			 */
			async addToBlacklist() {
				if (this.taskInfo.initiatorId != this.userInfo.userId) {
					this.$u.toast("您不是发起人，无权操作！");
					return
				}
				let result = await this.$u.api.unifyMiniRest({
					systemid: "meily",
					url: "/blacklist/add",
					member: this.Option_Select_User.partnerId,
					memberName: this.Option_Select_User.partnerName,
					businessId: this.docUnid,
					loading: true // 默认发起请求会有一个全局的Loading，设置false可去掉
				});
				if (result.code == 200) {
					this.showMSG('success', "添加成功！")
				} else {
					this.showMSG('error', "添加失败！")
				}
			},

			/**
			 * 移出黑名单
			 */
			async removeToBlacklist() {
				if (this.taskInfo.initiatorId != this.userInfo.userId) {
					this.$u.toast("您不是发起人，无权操作！");
					return
				}
				let result = await this.$u.api.unifyMiniRest({
					systemid: "meily",
					url: "/blacklist/removeByUserId",
					member: this.Option_Select_User.partnerId,
					type: "",
					loading: true // 默认发起请求会有一个全局的Loading，设置false可去掉
				});
				if (result.code == 200) {
					this.showMSG('success', "移出成功！")
				} else {
					this.showMSG('error', "移出失败！")
				}
			},

			/**
			 * 确认回收名额
			 */
			async confirmRecycling() {
				if (this.taskInfo.initiatorId != this.userInfo.userId) {
					this.$u.toast("您不是发起人，无权回收名额！");
					return
				}
				let result = await this.$u.api.unifyMiniRest({
					systemid: "meily",
					url: "/evaluation/signup/recyclingQuota",
					id: this.Option_Select_User.id,
					mainId: this.Option_Select_User.mainId,
					partnerId: this.Option_Select_User.partnerId,
					currentUserId: this.userInfo.userId,
					loading: true // 默认发起请求会有一个全局的Loading，设置false可去掉
				});
				if (result.code == 200) {
					this.showMSG('success', "回收名额成功！");
					this.pageNum = 1;
					this.initMembersData(this.docUnid); // 重新加载数据
				} else {
					this.$u.toast(result.msg);
				}
			},

			/**
			 * 根据状态获取标签内容
			 * 待提交=已报名 #ff5722
			 * 待验收=已提交 #ff0000
			 * 已退回=已退回 #ffc40f
			 * 已验收=已验收 #319b62
			 * A级/B级/C级 #e5baff
			 * 已作废 #b1b1b1
			 * 已回收 #666666
			 * @param {Object} orderStatus
			 * @param {Object} grade
			 */
			getStatusTag(status, grade) {

				if (status == '待提交') {
					return '已报名'
				} else if (status == '待验收') {
					return '已提交'
				} else if (status == '已验收' && this.isNotNull(grade)) {
					return grade + '级'
				} else {
					return status;
				}
			},

			/**
			 * 根据状态获取标签颜色
			 * 待提交=已报名 #ff5722
			 * 待验收=已提交 #ff0000
			 * 已退回=已退回 #ffc40f
			 * 已验收=已验收 #319b62
			 * A级/B级/C级 #e5baff
			 * 已作废 #b1b1b1
			 * 已回收 #666666
			 * @param {Object} status
			 * @param {Object} grade
			 */
			getStatusColor(status, grade) {
				if (status == '待提交') {
					return '#ff5722'
				} else if (status == '待验收') {
					return '#ff0000'
				} else if (status == '已退回') {
					return '#ffc40f'
				} else if (status == '已验收') {
					if(this.isNotNull(grade)){
						return '#e5baff'
					} else {
						return '#319b62'
					}
				} else if (status == '已作废') {
					return '#b1b1b1'
				} else {
					return '#666666';
				}
			},

		}
	}
</script>

<style scoped>
	html,
	body {
		color: #333;
		margin: 0;
		height: 100%;
		font-family: "Myriad Set Pro", "Helvetica Neue", Helvetica, Arial, Verdana, sans-serif;
		-webkit-font-smoothing: antialiased;
		-moz-osx-font-smoothing: grayscale;
		font-weight: normal;
	}

	* {
		-webkit-box-sizing: border-box;
		-moz-box-sizing: border-box;
		box-sizing: border-box;
	}

	a {
		text-decoration: none;
		color: #000;
	}

	a,
	label,
	button,
	input,
	select {
		-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
	}

	img {
		width: 100%;
		height: auto;
		display: block;
		border: 0;
	}

	body {
		background: #fff;
		color: #666;
	}

	html,
	body,
	div,
	dl,
	dt,
	dd,
	ol,
	ul,
	li,
	h1,
	h2,
	h3,
	h4,
	h5,
	h6,
	p,
	blockquote,
	pre,
	button,
	fieldset,
	form,
	input,
	legend,
	textarea,
	th,
	td {
		margin: 0;
		padding: 0;
	}

	a {
		text-decoration: none;
		color: #08acee;
	}

	button {
		outline: 0;
	}

	button,
	input,
	optgroup,
	select,
	textarea {
		margin: 0;
		font: inherit;
		color: inherit;
		outline: none;
	}

	li {
		list-style: none;
	}

	a {
		color: #666;
	}

	.clearfix::after {
		clear: both;
		content: ".";
		display: block;
		height: 0;
		visibility: hidden;
	}

	.clearfix {}

	.divHeight {
		width: 100%;
		height: 10px;
		background: #f5f7fc;
		position: relative;
		overflow: hidden;
	}

	.r-line {
		position: relative;
	}

	.r-line:after {
		content: '';
		position: absolute;
		z-index: 0;
		top: 0;
		right: 0;
		height: 100%;
		border-right: 1px solid #D9D9D9;
		-webkit-transform: scaleX(0.5);
		transform: scaleX(0.5);
		-webkit-transform-origin: 100% 0;
		transform-origin: 100% 0;
	}

	.b-line {
		position: relative;
	}

	.b-line:after {
		content: '';
		position: absolute;
		z-index: 2;
		bottom: 0;
		left: 0;
		width: 100%;
		height: 1px;
		border-bottom: 1px solid #e2e2e2;
		-webkit-transform: scaleY(0.5);
		transform: scaleY(0.5);
		-webkit-transform-origin: 0 100%;
		transform-origin: 0 100%;
	}

	.aui-arrow {
		position: relative;
		padding-right: 0.8rem;
		color: #7f8699;
		font-size: 0.85rem;
	}

	.aui-arrow span {
		font-size: 0.8rem;
		color: #9b9b9b;
	}

	.aui-arrow:after {
		content: " ";
		display: inline-block;
		height: 6px;
		width: 6px;
		border-width: 2px 2px 0 0;
		border-color: #848484;
		border-style: solid;
		-webkit-transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
		transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0);
		position: relative;
		top: -2px;
		position: absolute;
		top: 50%;
		margin-top: -6px;
		right: 2px;
		border-radius: 1px;
	}

	.aui-flex {
		display: -webkit-box;
		display: -webkit-flex;
		display: flex;
		-webkit-box-align: center;
		-webkit-align-items: center;
		align-items: center;
		padding: 15px;
		position: relative;
	}

	.aui-flex-box {
		-webkit-box-flex: 1;
		-webkit-flex: 1;
		flex: 1;
		min-width: 0;
		font-size: 14px;
		color: #333;
	}

	/* 必要布局样式css */
	.aui-flexView {
		width: 100%;
		height: 100%;
		margin: 0 auto;
		display: -webkit-box;
		display: -webkit-flex;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-orient: vertical;
		-webkit-box-direction: normal;
		-webkit-flex-direction: column;
		-ms-flex-direction: column;
		flex-direction: column;
	}

	.aui-scrollView {
		width: 100%;
		height: 100%;
		-webkit-box-flex: 1;
		-webkit-flex: 1;
		-ms-flex: 1;
		flex: 1;
		overflow-y: auto;
		overflow-x: hidden;
		-webkit-overflow-scrolling: touch;
		position: relative;
		padding-bottom: 10px;
	}

	.aui-navBar {
		height: 44px;
		position: relative;
		display: -webkit-box;
		display: -webkit-flex;
		display: -ms-flexbox;
		display: flex;
		z-index: 102;
		background: #4e85fd;
	}

	.aui-navBar-item {
		height: 44px;
		min-width: 15%;
		-webkit-box-flex: 0;
		-webkit-flex: 0 0 15%;
		-ms-flex: 0 0 15%;
		flex: 0 0 15%;
		padding: 0 0.9rem;
		display: -webkit-box;
		display: -webkit-flex;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-align: center;
		-webkit-align-items: center;
		-ms-flex-align: center;
		align-items: center;
		font-size: 0.7rem;
		white-space: nowrap;
		overflow: hidden;
		color: #808080;
		position: relative;
	}

	.aui-navBar-item:first-child {
		-webkit-box-ordinal-group: 2;
		-webkit-order: 1;
		-ms-flex-order: 1;
		order: 1;
		margin-right: -25%;
		font-size: 0.9rem;
		font-weight: bold;
	}

	.aui-navBar-item:last-child {
		-webkit-box-ordinal-group: 4;
		-webkit-order: 3;
		-ms-flex-order: 3;
		order: 3;
		-webkit-box-pack: end;
		-webkit-justify-content: flex-end;
		-ms-flex-pack: end;
		justify-content: flex-end;
		font-size: 14px;
		color: #333333;
	}

	.aui-center {
		-webkit-box-ordinal-group: 3;
		-webkit-order: 2;
		-ms-flex-order: 2;
		order: 2;
		display: -webkit-box;
		display: -webkit-flex;
		display: -ms-flexbox;
		display: flex;
		-webkit-box-pack: center;
		-webkit-justify-content: center;
		-ms-flex-pack: center;
		justify-content: center;
		-webkit-box-align: center;
		-webkit-align-items: center;
		-ms-flex-align: center;
		align-items: center;
		height: 44px;
		width: 80%;
		margin-left: 22%;
	}

	.aui-center-title {
		text-align: center;
		width: 100%;
		white-space: nowrap;
		overflow: hidden;
		display: block;
		text-overflow: ellipsis;
		font-size: 1rem;
		color: #fff;
	}

	.icon {
		width: 19px;
		height: 19px;
		display: block;
		border: none;
		float: left;
		background-size: 19px;
		background-repeat: no-repeat;
	}

	.aui-flex-box h1 {
		color: #303741;
		font-weight: 500;
		font-size: 1rem;
		overflow: hidden;
	}

	.aui-flex-box h2 {
		color: #4e84fd;
		font-weight: 500;
		font-size: 1rem;
		margin-bottom: 0.3rem;
		width: 300rpx;
		overflow: hidden;
		display: -webkit-box;
		-webkit-line-clamp: 1;
		-webkit-box-orient: vertical;
		word-break: break-all;
		text-overflow: ellipsis;
	}

	.aui-flex-box p {
		width: 480rpx;
		overflow: hidden;
		display: -webkit-box;
		-webkit-line-clamp: 1;
		-webkit-box-orient: vertical;
		word-break: break-all;
		text-overflow: ellipsis;
		font-size: 0.9rem;
		margin-bottom: 0.1rem;
		color: #939393;
	}

	.aui-flex-box h3 {
		font-size: 0.9rem;
		color: #8a8a8a;
		font-weight: normal;
		width: 100%;
		overflow: hidden;
		margin-bottom: 0.3rem;
	}

	.aui-palace {
		padding: 0.6rem 0.8rem;
		position: relative;
		overflow: hidden;
		background: white;
	}

	.aui-palace-grid {
		position: relative;
		float: left;
		padding: 1px;
		width: 25%;
		box-sizing: border-box;
		margin: 10px 0;
	}

	.aui-palace-grid img {
		width: 95%;
		margin: 0 auto;
	}

	.aui-palace-grid p {
		text-align: center;
		font-size: 12px;
		color: #919191;
	}



	.tab-nav {
		height: 45px;
		line-height: 45px;
		display: block;
		position: relative;
		background: #fff;
		z-index: 1;
		width: 100%;
		margin: 0 auto;
	}

	.tab-nav-item {
		height: 45px;
		line-height: 45px;
		position: relative;
		text-align: center;
		color: #585858;
		font-size: 0.9rem;
		display: block;
		float: left;
		width: 25%;
	}

	.tab-nav-item.tab-active {
		/* background-color: #51bd03; */
	}

	.tab-nav-item.tab-active a {
		color: #4e84fd;
		font-size: 0.95rem;
	}

	.tab-nav-item a {
		display: inherit;
		font-size: 0.95rem;
		color: #333;
	}

	.tab-panel {
		position: relative;
		overflow: hidden;
	}

	.tab-panel .tab-panel-item {
		width: 100%;
		position: absolute;
		top: 0;
		-webkit-transform: translateX(-100%);
		transform: translateX(-100%);
	}

	.tab-panel .tab-panel-item.tab-active~.tab-panel-item {
		-webkit-transform: translateX(100%);
		transform: translateX(100%);
	}

	.tab-panel .tab-panel-item.tab-active {
		position: relative;
		-webkit-transition: -webkit-transform .15s;
		transition: -webkit-transform .15s;
		transition: transform .15s;
		transition: transform .15s, -webkit-transform .15s;
		-webkit-transform: translateX(0);
		transform: translateX(0);
	}

	.tab-nav-item.tab-active:before {
		content: '';
		width: 50%;
		height: 3px;
		position: absolute;
		left: 50%;
		bottom: 0;
		margin-left: -25%;
		z-index: 4;
		border-radius: 100px;
		background-color: #4e84fd;
	}

	.icon-return {
		background-image: url('');

	}

	.icon-more {
		background-image: url('');
	}

	.aui-ranking-text em {
		background: #cfe4ff;
		width: 22px;
		height: 22px;
		line-height: 22px;
		color: #4e84fd;
		font-size: 16px;
		border-radius: 100px;
		text-align: center;
		font-style: normal;
		display: block;
	}

	.aui-ranking-img {
		width: 55px;
		height: 55px;
		border-radius: 100px;
		overflow: hidden;
		margin: 0 12px 0 8px;
	}


	.aui-ranking-text {
		width: 30px;
	}

	.aui-ranking-num {
		color: #ff703e;
		font-size: 22px;
	}

	.aui-ranking-icon {
		width: 40px;
	}

	.tab-panel-item .b-line:after {
		width: 90%;
		left: 20px;
	}

	.one em {
		width: 30px;
		height: 30px;
		background-size: 30px;
		background-repeat: no-repeat;
		background-image: url('');
		background-color: #fff;
		text-indent: -1111px;
	}

	.two em {
		width: 30px;
		height: 30px;
		background-size: 30px;
		background-repeat: no-repeat;
		background-image: url('');
		background-color: #fff;
		text-indent: -1111px;
	}

	.three em {
		width: 30px;
		height: 30px;
		background-size: 30px;
		background-repeat: no-repeat;
		background-image: url('');
		background-color: #fff;
		text-indent: -1111px;
	}
</style>